package com.ease.business.importing.importer;

//
//import java.util.ArrayList;
//import java.util.Date;
//import java.util.List;
//import java.util.Map;
//
//import org.apache.commons.lang.StringUtils;
//import org.apache.commons.lang.math.NumberUtils;
//
//import com.ease.irm.business.entitytemplate.vo.AttainableSingleAttributeTemplateParam;
//import com.ease.irm.business.importing.vo.RowValidationParam;
//import com.ease.nip.platform.access.metadata.util.MetaModelUtil;
//import com.ease.nip.platform.model.metadata.AttributeType;
//import com.ease.nip.platform.model.metadata.DictionaryOption;
//import com.ease.nip.platform.model.metadata.EntityType;
//import com.ease.nip.platform.model.metadata.MetaAttributeType;
//import com.ease.nip.platform.model.term.AttributeTemplate;
//import com.ease.nip.platform.model.term.type.AttributeValidationType;
//import com.ease.common.util.DateFormatUtil;
//import com.ease.document.poi.WorkbookUtil;
//import com.ease.type.DataType;

public class MetadataAttributeImporter {
	// String validationLabel, //
	// Object value, //
	// int columnIndex,//
	//
	// String attributeCode,//
	// MetaAttributeType metaAttributeType, //
	// AttributeType attributeType, //
	// AttributeTemplate attributeTemplate,//
	//
	// AttainableSingleAttributeTemplateParam attainableSingleAttributeTemplateParam,//
	// EntityType entityType,
	//
	// //
	// final int rowIndex, //
	// final R rawRow, //
	// final Map<String, Object> dataRow,//
	// final RowValidationParam rowValidationParam,//
	// final T param//
	//
	//
	// // 特殊情况如地址导入
	// // ATTRIBUTETEMPLATE是用户自定义,起始号码,终止号码等,那么attributetype是不存在的,那么特殊处理
	// if (attributeTemplate.getAttributeTypeId() <= 0) {
	// dataRow.put(attributeTemplate.getCode(), value);
	// return;
	// }
	//
	// AttributeValidationType attributeValidationType = attributeTemplate.getAttributeValidationType();
	// DataType dataType = attributeType.getMetaAttributeType().getDataType();
	// String validationExpression = attributeTemplate.getValidationExpression();
	//
	// String stringValue = asString(value);
	// // String metaAttributeTypeCode =
	// // attributeType.getMetaAttributeType().getCode();
	//
	// /* validateCoordinate */
	// // 陈红辉 6/22/2011 4:47:21 PM
	// // 地市的经纬度获取：
	// //
	// // RegionCoordinateRangeConfigService
	// // findByPrefectureId
	// // if (GeoPointedEntity.Attribute_x.equals(attributeCode) ||
	// // GeoPointedEntity.Attribute_y.equals(attributeCode)) {
	// //
	// // double doubleValue = asPrimitiveDouble(stringValue);
	// // if (null != dataRow) {
	// // dataRow.put(attributeCode, doubleValue);
	// // }
	// //
	// // long prefectureId =
	// // asPrimitiveLong(dataRow.get(PrefectureEntitySupport
	// // .Attribute_prefectureId));
	// //
	// // if (prefectureId > 0) {
	// // RegionCoordinateRange range =
	// // regionCoordinateRangeConfigService.findByPrefectureId(prefectureId,
	// // );
	// //
	// // if (null != range) {
	// // if (GeoPointedEntity.Attribute_x.equals(attributeCode)) {
	// // rowValidationParam.validate((range.getMinX() <= doubleValue &&
	// // doubleValue <= range.getMaxX()), "空间信息超出范围", columnIndex,
	// // range.getName() + "经度:" + range.getMinX() + ","
	// // + range.getMaxX() + "");
	// // } else {//GeoPointedEntity.Attribute_y.equals(attributeCode)
	// // // ) {
	// // rowValidationParam.validate((range.getMinY() <= doubleValue &&
	// // doubleValue <= range.getMaxY()), "空间信息超出范围", columnIndex,
	// // range.getName() + "纬度:" + range.getMinY() + ","
	// // + range.getMaxY() + "");
	// // }
	// // }
	// // }
	// //
	// // return;
	// // }
	// if (dataType == DataType.STRING //
	// || dataType == DataType.LONG //
	// || dataType == DataType.INTEGER //
	// || dataType == DataType.SHORT //
	// || dataType == DataType.BYTE //
	// ) {
	// int length = attributeType.getMetaAttributeType().getLength();
	//
	// /** validate length */
	// if (length > 0 && notEmpty(stringValue)) {
	// rowValidationParam.validate(getLength(stringValue) <= length, validationLabel, columnIndex, "数据长度需小于或等于" + length
	// + "位");
	// }
	// }
	//
	// switch (dataType) {
	// case STRING:
	// if (null != attributeValidationType) {
	// switch (attributeValidationType) {
	// case INCLUDE:
	// rowValidationParam.validate((stringValue.indexOf(validationExpression) >= 0), validationLabel, columnIndex,
	// "需包含 " + validationExpression);
	// break;
	// case EXCLUDE:
	// rowValidationParam.validate((stringValue.indexOf(validationExpression) < 0), validationLabel, columnIndex,
	// "不能包含 " + validationExpression);
	// break;
	// case NUMBER_ONLY:
	// rowValidationParam.validate(NumberUtils.isNumber(stringValue), validationLabel, columnIndex, "必须是数字");
	// break;
	// }
	// }
	// break;
	//
	// case INTEGER:
	//
	// case LONG:
	// long longValue = 0;
	// try {
	// longValue = Long.parseLong(stringValue);
	// } catch (Exception e) {
	// rowValidationParam.validate(false, validationLabel, columnIndex, "不是有效的数值");
	// }
	//
	// long longValidValue = 0;
	// if (attributeValidationType != null) {
	// switch (attributeValidationType) {
	// case LESS_THAN:
	// longValidValue = Long.parseLong(validationExpression);
	// rowValidationParam.validate(longValue < longValidValue, validationLabel, columnIndex, "需小于 " + longValidValue);
	// break;
	// case LESS_EQUAL_THAN:
	// longValidValue = Long.parseLong(validationExpression);
	// rowValidationParam.validate(longValue <= longValidValue, validationLabel, columnIndex, "需小于等于 " +
	// longValidValue);
	// break;
	// case EQUAL:
	// longValidValue = Long.parseLong(validationExpression);
	// rowValidationParam.validate(longValue == longValidValue, validationLabel, columnIndex, "需等于 " + longValidValue);
	// break;
	// case GREATE_THAN:
	// longValidValue = Long.parseLong(validationExpression);
	// rowValidationParam.validate(longValue > longValidValue, validationLabel, columnIndex, "需大于 " + longValidValue);
	// break;
	// case GREATE_EQUAL_THAN:
	// longValidValue = Long.parseLong(validationExpression);
	// rowValidationParam.validate(longValue >= longValidValue, validationLabel, columnIndex, "需大于等于 " +
	// longValidValue);
	// break;
	// case BETWEEN:
	// long[] longValidValues = null;
	// if (null != validationExpression) {
	// validationExpression = StringUtils.deleteWhitespace(validationExpression);
	//
	// if (validationExpression.indexOf(',') >= 0) {
	// longValidValues = longArray(validationExpression, ',');
	// } else {
	// longValidValues = longArray(validationExpression, '-');
	// }
	// if (null != longValidValues && longValidValues.length > 1) {
	// rowValidationParam.validate(longValidValues[0] <= longValue && longValue <= longValidValues[1], validationLabel,
	// columnIndex, "需介于 " + validationExpression);
	// }
	// }
	// break;
	// }
	// }
	// break;
	//
	// case DOUBLE:
	// double doubleValue = 0;
	// try {
	// doubleValue = Double.parseDouble(stringValue);
	// value = doubleValue;
	// } catch (Exception e) {
	// rowValidationParam.validate(false, validationLabel, columnIndex, " 不是有效的浮点类型  ");
	// }
	//
	// double doubleValidValue = 0;
	// if (attributeValidationType != null) {
	// switch (attributeValidationType) {
	// case LESS_THAN:
	// doubleValidValue = Double.parseDouble(validationExpression);
	// rowValidationParam.validate(doubleValue < doubleValidValue, validationLabel, columnIndex, "需小于 " +
	// doubleValidValue);
	// break;
	// case LESS_EQUAL_THAN:
	// doubleValidValue = Double.parseDouble(validationExpression);
	// rowValidationParam.validate(doubleValue <= doubleValidValue, validationLabel, columnIndex, "需小于等于 " +
	// doubleValidValue);
	// break;
	// case EQUAL:
	// doubleValidValue = Double.parseDouble(validationExpression);
	// rowValidationParam.validate(doubleValue == doubleValidValue, validationLabel, columnIndex, "需等于 " +
	// doubleValidValue);
	// break;
	// case GREATE_THAN:
	// doubleValidValue = Double.parseDouble(validationExpression);
	// rowValidationParam.validate(doubleValue > doubleValidValue, validationLabel, columnIndex, "需大于 " +
	// doubleValidValue);
	// break;
	// case GREATE_EQUAL_THAN:
	// doubleValidValue = Double.parseDouble(validationExpression);
	// rowValidationParam.validate(doubleValue >= doubleValidValue, validationLabel, columnIndex, "需大于等于 " +
	// doubleValidValue);
	// break;
	// case BETWEEN:
	// double[] doubleValidValues = doubleArray(validationExpression, ",");
	// rowValidationParam.validate(doubleValidValues[0] <= doubleValue && doubleValue <= doubleValidValues[1],
	// validationLabel, columnIndex, "需介于 " + validationExpression);
	// break;
	// }
	// }
	//
	// break;
	//
	// case MULTIPLE_DICTIONARY:
	//
	// List<DictionaryOption> multipleDictionarys = getDictionary(attributeType);
	// String[] values = StringUtils.split(stringValue, ',');
	//
	// List<DictionaryOption> selectedDictionarys = new ArrayList<DictionaryOption>();
	// for (String temp : values) {
	// DictionaryOption dictionary = MetaModelUtil.getDictionaryByName(temp, multipleDictionarys);
	// if (null == dictionary) {
	// rowValidationParam.validate(false, validationLabel, columnIndex, temp + " 字典值不存在[" +
	// MetaModelUtil.joinName(multipleDictionarys) + "]");
	// } else {
	// selectedDictionarys.add(dictionary);
	// }
	// }
	//
	// if (!notEmpty(selectedDictionarys)) {
	//
	// for (String temp : values) {
	// if (NumberUtils.isNumber(temp)) {
	// short shortValue = Short.parseShort(temp);
	// DictionaryOption dictionary = MetaModelUtil.getDictionaryByValue(shortValue, multipleDictionarys);
	// if (null == dictionary) {
	// rowValidationParam.validate(false, validationLabel, columnIndex, shortValue + " 字典值不存在[" +
	// MetaModelUtil.joinName(multipleDictionarys) + "]");
	// } else {
	// selectedDictionarys.add(dictionary);
	// }
	// } else {
	// // Assertion?
	// }
	// }
	// }
	//
	// if (!notEmpty(selectedDictionarys)) {
	// rowValidationParam.validate(false, validationLabel, columnIndex, "字典值不存在[" +
	// MetaModelUtil.joinName(multipleDictionarys) + "]");
	// value = null;
	// } else {
	// value = MetaModelUtil.joinValue(selectedDictionarys);
	// }
	//
	// break;
	//
	// case SINGLE_DICTIONARY:
	//
	// List<DictionaryOption> dictionarys = getDictionary(attributeType);
	//
	// DictionaryOption dictionary = MetaModelUtil.getDictionaryByName(stringValue, dictionarys);
	// if (null == dictionary && !isDataFromExternal()) {
	// short shortValue = asShort(value);
	// dictionary = MetaModelUtil.getDictionaryByValue(shortValue, dictionarys);
	// }
	//
	// if (null == dictionary) {
	// rowValidationParam.validate(false, validationLabel, columnIndex, "字典值不存在[" + MetaModelUtil.joinName(dictionarys)
	// + "]");
	// value = null;
	// } else {
	// value = new Short(dictionary.getValue());
	// }
	// break;
	//
	// case DATE:
	// Date date = null;
	// if (value instanceof java.util.Date) {
	// date = (Date) value;
	// } else {
	// date = ExcelUtil.getCellDate(stringValue);
	// if (null == date) {
	// date = DateFormatUtil.toDate(stringValue);
	// }
	// if (null == date) {
	// date = DateFormatUtil.toDatetime(stringValue);
	// }
	//
	// }
	// rowValidationParam.validate(null != date, validationLabel, columnIndex, "日期格式错误(" + DateFormatUtil.DATA_FORMAT +
	// "或" + DateFormatUtil.DATATIME_FORMAT + ")");
	// value = date;
	//
	// break;
	// }
	//
	// if (isValidateAttributeUniquenessNecessary(attributeTemplate, param.getEntityTemplate(), param)) {
	// boolean isRegion = true;
	// // if(rawRow instanceof EntityWithRegionId){
	// // isRegion = true
	// // }
	// this.doValidateAttributeUniqueness(isRegion, validationLabel, value, columnIndex, attributeCode,//
	// metaAttributeType, //
	// attributeType, //
	// attributeTemplate,//
	// attainableSingleAttributeTemplateParam, entityType, rowIndex, rawRow, dataRow, rowValidationParam, param);
	// }
	//
	// if (null != dataRow) {
	// dataRow.put(attributeCode, value);
	// }

}
